let copy1 = (text: string) => {
    return new Promise<boolean>((resolve, reject) => {
        navigator.clipboard
            .writeText(text)
            .then(() => resolve(true))
            .catch((error) => reject(error));
    });
};

let copy2 = (text: string) => {
    return new Promise<boolean>((resolve, reject) => {
        // 如果现代API不可用，尝试使用传统的选中文本 + 执行命令的方式
        try {
            // 创建一个隐藏的textarea元素
            const textarea = document.createElement('textarea');
            textarea.value = text;
            textarea.style.position = 'fixed'; // 防止滚动到页面顶部
            textarea.style.opacity = '0'; // 隐藏元素
            document.body.appendChild(textarea);

            // 选中textarea中的文本
            textarea.focus();
            textarea.select();

            // 执行复制命令
            const successful = document.execCommand('copy');
            if (successful) {
                console.log('Text copied to clipboard using execCommand.');
                resolve(true);
            } else {
                reject(new Error('Copy command failed.'));
            }

            // 移除临时元素
            document.body.removeChild(textarea);
            return successful;
        } catch (error) {
            reject(error);
        }
    });
};

let copy = (text: string): Promise<boolean> => {
    if (navigator.clipboard && !!navigator.clipboard.writeText) {
        copy = copy1;
        return copy1(text);
    } else {
        copy = copy2;
        return copy2(text);
    }
};

export default class EClipboardUtil {
    static copy(text: string) {
        return copy(text);
    }
}
